The present subject matter relates generally to scalable, standardized IT deployment environment. More specifically, the present invention relates to an IT environment deployed to a public or private cloud automatically, without human interaction, and is resizable such that the resources can be automatically released (“turned off”) when not needed and powered on when use is expected.
Deploying an IT environment, especially one that includes virtual desktops, on a public or private cloud is a complex and manual process that involves integration of multiple components from different vendors. The process is susceptible to errors due to the significant human element involved. The process is also time consuming and expensive. Deploying the same IT environment to one cloud (e.g., Microsoft Azure) can be drastically different from another cloud (e.g., Amazon AWS) due to the nuances of each platform, available APIs and hardware limitations.
Much of the complexity stems from the multitude (thousands) of design choices that have to be made during the provisioning process. Each of these choices can have a cascade effect where, if an early choice is reconsidered, the entire environment may need to be re-created. Maintaining and supporting these environments is challenging because of the unique, “one-off” nature of each one. Engineers must maintain detailed documentation on each deployment and always be cognizant of all the nuances for each implementation. Troubleshooting often requires an experienced engineer who understand the entire package.
The current state of the art is problematic because resources are not efficiently allocated for either server-side providers or end users. The use of “rented” (e.g., Public cloud, collocation space, etc.) infrastructure to host IT systems often results in inefficient spend. This is true because most workloads are non-uniformly distributed across the hours of the day and days of week. For example, a hosted user desktop will be used during normal business hours of 9-5 on weekdays and not used during other times of the week. In this case, the hosted computer is being utilized 24% of the time, but, since it's dedicated to the “renter” of infrastructure (meaning it's not available to be used by anyone else that's a client of the provider), the cost of the computer is calculated as if it were being used 100% of the time.
The inefficient allocation of computing capacity results in a waste of provider resources, since even when the computer is not being used it sits idle and cannot be used by others, and, more importantly, it results in a waste of the customer's money, since the benefit is only derived for a fraction of the time for which the customer is paying.
Previous attempts to address this problem have been made, but the use cases for when these solutions could be effectively implemented have been limited. For example, previous systems typically assumed that there were many (sometimes hundreds or thousands) of users of identical desktops during work hours and fewer users that used their desktops during off hours. These previous systems turned off some of the identical servers during off hours as the load decreased and turned the servers back on during work hours as the load on the system increased.
The major limitation of this previous approach is that it only worked when each user had a desktop that was identical to a significant number of other users, which is unrealistic in today's workplace environment. Although this previous approach provided flexibility, because the system could meet resource demands by serving a random desktop to the user out of a pool of identical desktops at any time, and because the size of the desktop pool could be adjusted by shutting down some of its resources (i.e., server hosts). It could not address needs in which each user has a customized desktop environment.
However, in most workplace environments, users' desktops are persistent. This means that each user's desktop is customized to that user with specific applications, data, settings, and preferences. Each user's desktop may also vary in terms of power (e.g., CPU, RAM hard drive space, etc.). Since persistent desktops cannot be used interchangeably between users, the previous systems that scale groups of identical desktop resources do not solve the problem.
In addition to the problems expressed above, previous systems had difficulty in accurately estimating the true system costs prior to implementation. Estimating the actual costs of provisioning a complete IT environment can be pretty complex; in fact, many managed service providers (MSPS) don't have a real grasp on the numbers until after they deploy the system. Using previously existing calculators, it may not have been easy to compile all of the inputs needed in order to make the output accurate. For example, while it may be obvious to include direct costs of the virtual environment, it might be easy to overlook the necessary software licenses and similar add on costs, including the costs associated with remote desktop servers (RDS) and client access licenses (CAL), which are required in order to properly connect to a remote desktop session host server. Another often overlooked but important aspect in estimating costs is the “plumbing,” including expenses such as bandwidth, disk I/O, and storage costs. Beyond the foundational expenses, there are often a number of ancillary capabilities built in to virtual environments, such as reserved virtual machine instances, which allow you to reserve virtual machines for a one- or three-year period for greater price predictability and cost savings.
Previous systems have also fallen short in their delivery of performance monitoring and testing. The loss of productivity and loss of efficiency caused by IT latencies are real-world problems. So many organizations rely on their employees' ability to rapidly and reliably access email, applications, web, and other business-critical IT components. Any problems in these areas can be a huge blow to productivity, especially without an intelligent performance monitoring solution in place. Without proactive monitoring, businesses can spend more time troubleshooting and trying to pinpoint problems than actually problem solving.
Accordingly, there is a need for scalable, standardized IT deployment environment that allows for deployment to any public or private cloud automatically, and without human interaction, that is resizable such that the individual resources can be released (“turned off”) when not needed and powered on when use is expected, as described herein. Further, there is a need for accurate cost calculation and proactive productivity and efficiency testing, also as described herein.